package Gestores.Factory;

import Gestores.DtoObjects.*;
import Ventana.Interfaces.LogError;

public class FactoryClass {

    public static AfiliadoDTO afiliado;
    public static CuentaPagoDTO cuentaPago;
    public static CuotaDTO cuota;
    public static CursoDTO curso;
    public static DetalleEgresoDTO egreso;
    public static DetalleLaboralDTO detalleEgreso;
    public static DetallePagoDTO detallePago;
    public static EmailDTO email;
    public static InscripcionDTO inscripcion;
    public static PagoCertificadoDTO pagoCertificado;
    public static PagoCredencialDTO pagoCredencial;
    public static PagoMatriculaDTO pagoMatricula;
    public static TelefonoDTO telefono;
    public static TituloAcademicoDTO tituloAcademico;
    public static TituloProvisionNacionalDTO tituloProvisionNacional;
    public static UsuarioDTO usuario;
    public static BitacoraDTO bitacora;

    public static AfiliadoDTO getAfiliadoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.afiliado == null) {
                FactoryClass.afiliado = new AfiliadoDTO();
            }
            return afiliado;
        }
    }
    
    public static UsuarioDTO getUsuarioInstance(){
        synchronized (FactoryClass.class){
            if(FactoryClass.usuario == null)
                FactoryClass.usuario = new UsuarioDTO();
        }
        return usuario;
    }
    
    public static BitacoraDTO getBitacoraInstance(){
        synchronized (FactoryClass.class){
            if(FactoryClass.bitacora == null)
                FactoryClass.bitacora = new BitacoraDTO();
        }
        return bitacora;
    }

    
    

    public static DetalleEgresoDTO getDetalleEgresoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.egreso == null) {
                FactoryClass.egreso = new DetalleEgresoDTO();
            }
            return egreso;
        }
    }

    public static CuentaPagoDTO getCuentaPagoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.cuentaPago == null) {
                FactoryClass.cuentaPago = new CuentaPagoDTO();
            }
            return cuentaPago;
        }
    }

    public static CursoDTO getCursoInstance() {
        synchronized (FactoryClass.class) {
            if (curso == null) {
                curso = new CursoDTO();
            }
            return curso;
        }
    }

    public static TelefonoDTO getTelefonoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.telefono == null) {
                FactoryClass.telefono = new TelefonoDTO();
            }
            return telefono;
        }
    }

    public static EmailDTO getEmailInstance() {
        synchronized (FactoryClass.class) {
            if (email == null) {
                email = new EmailDTO();
            }
            return email;
        }
    }

    public static PagoCertificadoDTO getPagoCertificadoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.pagoCertificado == null) {
                FactoryClass.pagoCertificado = new PagoCertificadoDTO();
            }
            return pagoCertificado;
        }
    }

    public static PagoCredencialDTO getPagoCredencialInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.pagoCredencial == null) {
                FactoryClass.pagoCredencial = new PagoCredencialDTO();
            }
            return pagoCredencial;
        }
    }

    public static PagoMatriculaDTO getPagoMatriculaInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.pagoMatricula == null) {
                FactoryClass.pagoMatricula = new PagoMatriculaDTO();
            }
            return pagoMatricula;
        }
    }

    public static CuotaDTO getCuotaInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.cuota == null) {
                FactoryClass.cuota = new CuotaDTO();
            }
            return cuota;
        }
    }

    public static DetallePagoDTO getDetallePagoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.detallePago == null) {
                FactoryClass.detallePago = new DetallePagoDTO();
            }
            return detallePago;
        }
    }

    public static TituloAcademicoDTO getTituloAcademicoInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.tituloAcademico == null) {
                FactoryClass.tituloAcademico = new TituloAcademicoDTO();
            }
            return tituloAcademico;
        }
    }

    public static TituloProvisionNacionalDTO getTituloProvisionNacionalInstance() {
        synchronized (FactoryClass.class) {
            if (FactoryClass.tituloProvisionNacional == null) {
                FactoryClass.tituloProvisionNacional = new TituloProvisionNacionalDTO();
            }
            return tituloProvisionNacional;
        }
    }
}
